Elasticsearch ব্যবহার করে বিভিন্ন ধরনের বেসিক অপারেশন করা যায়, যেমন ডকুমেন্ট ইনডেক্স করা, সার্চ করা, ডকুমেন্ট আপডেট করা, এবং ডকুমেন্ট ডিলিট করা। Elasticsearch RESTful API ব্যবহার করে এই অপারেশনগুলো সম্পন্ন করা হয়। নিচে Elasticsearch-এর বেসিক অপারেশনগুলো বিস্তারিতভাবে আলোচনা করা হলো:
PUT /my-index
my-index
হলো ইন্ডেক্সের নাম। ইন্ডেক্স তৈরি হলে, আপনি acknowledged: true
রেসপন্স দেখতে পাবেন।POST /my-index/_doc/1
{
"name": "John Doe",
"age": 30,
"occupation": "Software Engineer"
}
/my-index
হলো ইন্ডেক্সের নাম।/_doc/1
হলো ডকুমেন্ট আইডি (1
এখানে ডকুমেন্টের ইউনিক আইডি)।created
স্ট্যাটাস সহ রেসপন্স পাওয়া যাবে।GET /my-index/_doc/1
/my-index
ইন্ডেক্সের 1
আইডি সহ ডকুমেন্ট রিট্রিভ করবে এবং সেই ডকুমেন্টের তথ্য JSON ফরম্যাটে রেসপন্স করবে।POST /my-index/_update/1
{
"doc": {
"age": 31
}
}
/my-index/_update/1
এর মাধ্যমে 1
আইডি সহ ডকুমেন্ট আপডেট করা হয়েছে।"doc"
ফিল্ডের ভেতরে আপডেট করা তথ্য প্রদান করা হয়।DELETE /my-index/_doc/1
/my-index
ইন্ডেক্সের 1
আইডি সহ ডকুমেন্ট মুছে ফেলবে। সফলভাবে ডিলিট হলে deleted
স্ট্যাটাস সহ রেসপন্স পাওয়া যাবে।DELETE /my-index
my-index
নামক ইন্ডেক্সটি ডিলিট করবে। ডিলিট সফল হলে acknowledged: true
রেসপন্স আসবে।GET /my-index/_search
{
"query": {
"match": {
"occupation": "Software Engineer"
}
}
}
/my-index/_search
ইন্ডেক্সে সার্চ করা হচ্ছে।"query"
ফিল্ডে "match"
কন্ডিশন ব্যবহার করে "occupation"
ফিল্ডে "Software Engineer"
টার্মের সাথে মিল খুঁজে বের করা হচ্ছে।GET /my-index/_settings
GET /my-index/_mapping
/my-index/_settings
ইন্ডেক্সের কনফিগারেশন এবং /my-index/_mapping
ইন্ডেক্সে থাকা ডকুমেন্টের স্ট্রাকচার এবং ডেটা টাইপ দেখাবে।POST /_bulk
{ "index": { "_index": "my-index", "_id": "2" } }
{ "name": "Jane Doe", "age": 28, "occupation": "Data Scientist" }
{ "delete": { "_index": "my-index", "_id": "1" } }
2
আইডি সহ।1
আইডি সহ ডকুমেন্ট ডিলিট করা হচ্ছে।GET /_cluster/health
GET /_nodes
/cluster/health
ক্লাস্টারের সামগ্রিক স্বাস্থ্য সম্পর্কিত তথ্য দেখাবে, যেমন ক্লাস্টারের স্ট্যাটাস (green, yellow, red), সক্রিয় শার্ডের সংখ্যা, ইত্যাদি।/nodes
ক্লাস্টারের নোড সম্পর্কিত তথ্য, যেমন প্রতিটি নোডের নাম, IP, এবং রিসোর্স ব্যবহার দেখাবে।Elasticsearch-এর বেসিক অপারেশনগুলো খুব সহজে RESTful API ব্যবহার করে করা যায়। ইন্ডেক্স তৈরি করা, ডকুমেন্ট ইনডেক্স করা, সার্চ করা, আপডেট করা, এবং ডিলিট করার মতো অপারেশনগুলো Elasticsearch-এ দ্রুত এবং কার্যকরভাবে সম্পন্ন করা যায়। Bulk API এবং ক্লাস্টারের স্বাস্থ্য মনিটরিংয়ের মতো অপারেশনগুলো Elasticsearch-এর স্কেলেবিলিটি এবং পারফরম্যান্স নিশ্চিত করতে সহায়ক।
Elasticsearch-এ Index ডেটা সংরক্ষণের জন্য একটি লজিক্যাল ডাটাবেস হিসেবে কাজ করে, যেখানে Document গুলো JSON ফরম্যাটে সংরক্ষিত থাকে। Mapping হলো ডকুমেন্টের ফিল্ডের স্ট্রাকচার এবং ডেটা টাইপ নির্ধারণ করার জন্য ব্যবহৃত একটি পদ্ধতি, যা Elasticsearch-কে ডেটা ইন্ডেক্স এবং সার্চ করতে সহায়ক করে। নিচে Elasticsearch-এ Index, Document এবং Mapping তৈরি করার ধাপগুলো বিস্তারিতভাবে আলোচনা করা হলো:
PUT /my-index
/my-index
হলো ইন্ডেক্সের নাম।acknowledged: true
সহ একটি রেসপন্স দেখা যাবে।PUT /my-index
{
"settings": {
"number_of_shards": 3,
"number_of_replicas": 1
}
}
PUT /my-index
{
"mappings": {
"properties": {
"name": { "type": "text" },
"age": { "type": "integer" },
"occupation": { "type": "text" },
"join_date": { "type": "date" }
}
}
}
text
, integer
, date
ইত্যাদি।PUT /my-index/_mapping
{
"properties": {
"email": { "type": "keyword" },
"phone_number": { "type": "text" }
}
}
email
এবং phone_number
যুক্ত করবে।একটি ডকুমেন্ট ইনডেক্স করতে HTTP POST বা PUT রিকোয়েস্ট ব্যবহার করা হয়।
উদাহরণ:
POST /my-index/_doc/1
{
"name": "John Doe",
"age": 30,
"occupation": "Software Engineer",
"join_date": "2022-05-10"
}
এখানে:
/my-index
হলো ইন্ডেক্সের নাম।/_doc/1
হলো ডকুমেন্ট আইডি, যা ডকুমেন্টটিকে ইউনিকভাবে চিহ্নিত করে।সফলভাবে ইনডেক্স হলে created
স্ট্যাটাস সহ রেসপন্স পাওয়া যাবে।
PUT /my-index/_mapping
{
"properties": {
"department": { "type": "text" }
}
}
POST /my-index/_doc/2
{
"name": "Jane Doe",
"age": 28,
"occupation": "Data Scientist",
"join_date": "2023-03-01",
"department": "Data Science"
}
GET /my-index/_doc/1
/my-index
ইন্ডেক্সের 1
আইডি সহ ডকুমেন্ট রিট্রিভ করবে এবং সেই ডকুমেন্টের তথ্য JSON ফরম্যাটে রেসপন্স করবে।POST /my-index/_update/1
{
"doc": {
"age": 31,
"department": "Engineering"
}
}
"doc"
ফিল্ডের ভেতরে আপডেট করা তথ্য প্রদান করা হয়।Elasticsearch-এ Index, Document, এবং Mapping তৈরি করা খুবই সহজ এবং RESTful API ব্যবহার করে এটি করা যায়। Index তৈরি করে সেটার Mapping নির্ধারণ করা Elasticsearch-কে ডেটা সঠিকভাবে ইন্ডেক্স এবং সার্চ করতে সহায়ক করে। ডকুমেন্ট ইনডেক্স করা এবং আপডেট করার মাধ্যমে ডেটা সহজে ম্যানেজ করা যায় এবং Mapping কাস্টমাইজ করে ডেটার কাঠামো নির্ধারণ করা যায়।
Elasticsearch-এ ডেটা ইন্ডেক্সিং এবং সার্চ অপারেশন হলো ডেটা ব্যবস্থাপনা এবং রিট্রিভালের মূল উপাদান। Elasticsearch ডকুমেন্ট ইনডেক্সিং-এর মাধ্যমে ডেটা সংরক্ষণ করে এবং সার্চ অপারেশন পরিচালনা করে দ্রুত এবং কার্যকরভাবে ডেটা রিট্রিভ করতে সক্ষম হয়। নিচে Elasticsearch-এ Data Indexing এবং Search Operation-এর ধাপ এবং উদাহরণ আলোচনা করা হলো।
POST /my-index/_doc/1
{
"name": "John Doe",
"age": 30,
"occupation": "Software Engineer",
"join_date": "2022-05-10"
}
/my-index
হলো ইন্ডেক্সের নাম।/_doc/1
হলো ডকুমেন্ট আইডি, যা ডকুমেন্টটিকে ইউনিকভাবে চিহ্নিত করে।created
স্ট্যাটাস সহ একটি রেসপন্স দেখা যাবে।POST /_bulk
{ "index": { "_index": "my-index", "_id": "2" } }
{ "name": "Jane Doe", "age": 28, "occupation": "Data Scientist", "join_date": "2023-03-01" }
{ "index": { "_index": "my-index", "_id": "3" } }
{ "name": "Alice", "age": 35, "occupation": "Product Manager", "join_date": "2021-11-15" }
/_bulk
API ব্যবহার করে ইনডেক্স করা হচ্ছে।_index
এবং _id
নির্ধারণ করা হয়েছে, এবং ডকুমেন্টের তথ্য JSON ফরম্যাটে প্রদান করা হয়েছে।GET /my-index/_search
{
"query": {
"match": {
"occupation": "Software Engineer"
}
}
}
/my-index/_search
ইন্ডেক্সে সার্চ করা হচ্ছে।"query"
ফিল্ডে "match"
কন্ডিশন ব্যবহার করে "occupation"
ফিল্ডে "Software Engineer"
টার্মের সাথে মিল খুঁজে বের করা হচ্ছে।GET /my-index/_search
{
"query": {
"bool": {
"must": [
{ "match": { "occupation": "Software Engineer" } }
],
"filter": [
{ "range": { "age": { "gte": 25, "lte": 35 } } }
]
}
}
}
"bool"
কন্ডিশন ব্যবহার করে "must"
এবং "filter"
ক্লজ দিয়ে সার্চ করা হয়েছে।"must"
ক্লজের মাধ্যমে "occupation"
ফিল্ডে "Software Engineer"
টার্ম খোঁজা হয়েছে।"filter"
ক্লজের মাধ্যমে "age"
ফিল্ডে ২৫ থেকে ৩৫ বছরের মধ্যে থাকা ডকুমেন্টগুলো ফিল্টার করা হয়েছে।GET /my-index/_search
{
"query": {
"bool": {
"must": [
{ "match": { "occupation": "Data Scientist" } },
{ "match": { "department": "Data Science" } }
]
}
}
}
"bool"
কন্ডিশন ব্যবহার করে "must"
ক্লজে একাধিক কন্ডিশন সেট করা হয়েছে, যাতে "occupation"
এবং "department"
উভয় ফিল্ডে মিল খুঁজে বের করা যায়।GET /my-index/_search
{
"aggs": {
"average_age": {
"avg": {
"field": "age"
}
}
},
"size": 0
}
"aggs"
ফিল্ডে "average_age"
নামক একটি অ্যাগ্রিগেশন তৈরি করা হয়েছে, যা "age"
ফিল্ডের গড় হিসাব করবে।"size": 0
দিয়ে সার্চ রেসপন্সে ডকুমেন্ট না দেখিয়ে শুধুমাত্র অ্যাগ্রিগেশন রেসপন্স দেখানো হয়েছে।"sort"
ফিল্ড ব্যবহার করা হয়:GET /my-index/_search
{
"query": {
"match": {
"occupation": "Software Engineer"
}
},
"sort": [
{ "age": { "order": "asc" } }
]
}
"age"
ফিল্ডের উপর ভিত্তি করে ডকুমেন্টগুলো এসেন্ডিং (asc) অর্ডারে সর্চ করা হয়েছে।"from"
এবং "size"
প্যারামিটার ব্যবহার করা হয়:GET /my-index/_search
{
"query": {
"match": {
"occupation": "Data Scientist"
}
},
"from": 0,
"size": 5
}
"from"
প্যারামিটার সার্চ রেসপন্সে কোন ডকুমেন্ট থেকে শুরু হবে তা নির্দেশ করে এবং "size"
প্যারামিটার কতগুলি ডকুমেন্ট প্রদর্শিত হবে তা নির্ধারণ করে।Elasticsearch-এ Data Indexing এবং Search Operation খুবই দ্রুত এবং কার্যকরীভাবে RESTful API ব্যবহার করে সম্পন্ন করা যায়। ডকুমেন্ট ইনডেক্স করে ডেটা সংরক্ষণ, ফিল্টার এবং সার্চ করে ডেটা রিট্রিভ করা Elasticsearch-এ সহজ এবং স্কেলেবল। উন্নত সার্চ অপারেশন এবং অ্যাগ্রিগেশন ব্যবহার করে ডেটা বিশ্লেষণ আরও সহজে করা যায়, যা Elasticsearch-কে একটি শক্তিশালী সার্চ এবং অ্যানালিটিক্স ইঞ্জিন হিসেবে প্রতিষ্ঠিত করে।
Elasticsearch একটি RESTful সার্চ এবং অ্যানালিটিক্স ইঞ্জিন, যা REST API এর মাধ্যমে ডেটা ইন্ডেক্সিং, সার্চ, এবং ডেটা ম্যানিপুলেশন পরিচালনা করে। REST API ব্যবহার করে Elasticsearch এর সাথে HTTP রিকোয়েস্ট (GET, POST, PUT, DELETE) পাঠিয়ে সহজেই যোগাযোগ করা যায়। Elasticsearch JSON ফরম্যাটে রিকোয়েস্ট গ্রহণ করে এবং রেসপন্স প্রদান করে। নিচে REST API ব্যবহার করে Elasticsearch এর সাথে যোগাযোগের বিস্তারিত ধাপ এবং উদাহরণ দেওয়া হলো:
REST API ব্যবহার করে Elasticsearch এর সাথে যোগাযোগ করতে নিম্নলিখিত HTTP মেথডগুলো ব্যবহার করা হয়:
API রিকোয়েস্ট পাঠানোর জন্য আপনি cURL, Postman, বা ব্রাউজারের API ক্লায়েন্ট ব্যবহার করতে পারেন।
PUT http://localhost:9200/my-index
acknowledged: true
সহ একটি JSON রেসপন্স প্রদান করবে, যা ইন্ডেক্স সফলভাবে তৈরি হওয়ার ইঙ্গিত দেয়।PUT http://localhost:9200/my-index
{
"settings": {
"number_of_shards": 3,
"number_of_replicas": 1
}
}
POST http://localhost:9200/my-index/_doc/1
{
"name": "John Doe",
"age": 30,
"occupation": "Software Engineer"
}
/my-index
হলো ইন্ডেক্সের নাম।/_doc/1
হলো ডকুমেন্টের ইউনিক আইডি।GET http://localhost:9200/my-index/_doc/1
/my-index
ইন্ডেক্স থেকে 1
আইডি সহ ডকুমেন্ট রিট্রিভ করবে এবং JSON ফরম্যাটে ডকুমেন্টের তথ্য প্রদর্শন করবে।POST http://localhost:9200/my-index/_update/1
{
"doc": {
"age": 31,
"occupation": "Senior Software Engineer"
}
}
"doc"
ফিল্ডের মাধ্যমে আপডেট করা তথ্য প্রদান করা হয়। Elasticsearch এটি আপডেট করে এবং একটি রেসপন্স প্রদান করে।DELETE http://localhost:9200/my-index/_doc/1
1
আইডি সহ ডকুমেন্টটি মুছে ফেলবে এবং একটি সফল রেসপন্স প্রদর্শন করবে।GET http://localhost:9200/my-index/_search
{
"query": {
"match": {
"occupation": "Software Engineer"
}
}
}
"match"
কন্ডিশন ব্যবহার করে "occupation"
ফিল্ডে "Software Engineer"
টার্মের সাথে মিল খুঁজে বের করা হচ্ছে। সার্চ রেসপন্সে মিলে যাওয়া ডকুমেন্টগুলো JSON ফরম্যাটে প্রদর্শিত হবে।GET http://localhost:9200/my-index/_search
{
"query": {
"bool": {
"must": [
{ "match": { "occupation": "Software Engineer" } }
],
"filter": [
{ "range": { "age": { "gte": 25, "lte": 35 } } }
]
}
}
}
"bool"
কন্ডিশন এবং "range"
ফিল্টার ব্যবহার করে সার্চটি আরও নির্দিষ্ট করা হয়েছে।POST http://localhost:9200/_bulk
{ "index": { "_index": "my-index", "_id": "2" } }
{ "name": "Jane Doe", "age": 28, "occupation": "Data Scientist" }
{ "delete": { "_index": "my-index", "_id": "1" } }
1
আইডি সহ ডকুমেন্ট ডিলিট করা হয়েছে।GET http://localhost:9200/_cluster/health
GET http://localhost:9200/_nodes
REST API ব্যবহার করে Elasticsearch এর সাথে খুব সহজে যোগাযোগ করা যায়। ইন্ডেক্স তৈরি করা, ডকুমেন্ট ইনডেক্স করা, সার্চ অপারেশন চালানো, এবং ক্লাস্টারের স্বাস্থ্য চেক করার মতো কাজগুলো RESTful API ব্যবহার করে দ্রুত এবং কার্যকরভাবে করা যায়। JSON ফরম্যাটে রিকোয়েস্ট এবং রেসপন্স প্রদান করার কারণে এটি ডেটা ম্যানিপুলেশন এবং রিট্রিভালকে আরও সহজ করে তোলে।
Elasticsearch Query DSL (Domain Specific Language) হলো Elasticsearch-এ ডেটা সার্চ এবং ফিল্টার করার জন্য একটি JSON ভিত্তিক ল্যাঙ্গুয়েজ। এটি একটি শক্তিশালী এবং নমনীয় টুল যা ব্যবহারকারীদের ডকুমেন্টের মধ্যে নির্দিষ্ট শর্ত, কিওয়ার্ড, এবং ফিল্টার ব্যবহার করে সার্চ অপারেশন চালাতে সহায়ক। Query DSL ব্যবহার করে বিভিন্ন ধরনের সার্চ এবং ফিল্টার তৈরি করা যায়, যেমন টার্ম সার্চ, ফুল-টেক্সট সার্চ, রেঞ্জ ফিল্টার, বুলিয়ান অপারেশন, এবং আরও অনেক কিছু। নিচে Elasticsearch Query DSL-এর বিস্তারিত ধারণা এবং এর উপাদানগুলো নিয়ে আলোচনা করা হলো।
Elasticsearch Query DSL মূলত দুটি প্রধান অংশে বিভক্ত: Leaf Query Clauses এবং Compound Query Clauses। এগুলো একত্রে ব্যবহার করে আরও জটিল এবং উন্নত সার্চ অপারেশন তৈরি করা যায়।
উদাহরণ:
{
"query": {
"term": {
"occupation": "engineer"
}
}
}
"term"
কন্ডিশনটি "occupation"
ফিল্ডে "engineer"
মান খুঁজে বের করছে।উদাহরণ:
{
"query": {
"bool": {
"must": [
{ "match": { "occupation": "software engineer" } }
],
"filter": [
{ "range": { "age": { "gte": 25, "lte": 35 } } }
]
}
}
}
"bool"
কন্ডিশন ব্যবহার করে "must"
ক্লজে "occupation"
ফিল্ডে "software engineer"
টার্ম খোঁজা হচ্ছে এবং "filter"
ক্লজে "age"
ফিল্ডে বয়সের রেঞ্জ (২৫ থেকে ৩৫) ফিল্টার করা হচ্ছে।{
"query": {
"match": {
"description": "open source software"
}
}
}
"description"
ফিল্ডে "open source software"
টার্মটি খোঁজা হচ্ছে।term কন্ডিশন নির্দিষ্ট ফিল্ডের সুনির্দিষ্ট মান খুঁজে বের করতে ব্যবহৃত হয়। এটি সাধারণত স্ট্রাকচারড ডেটার জন্য প্রযোজ্য, যেমন সংখ্যা, তারিখ, বা কিওয়ার্ড।
{
"query": {
"term": {
"status": "active"
}
}
}
"status"
ফিল্ডে "active"
মান খোঁজা হচ্ছে।{
"query": {
"range": {
"salary": {
"gte": 50000,
"lte": 100000
}
}
}
}
"salary"
ফিল্ডে ৫০,০০০ থেকে ১,০০,০০০ এর মধ্যে থাকা ডকুমেন্টগুলো ফিল্টার করা হচ্ছে।{
"query": {
"bool": {
"must": [
{ "match": { "occupation": "developer" } }
],
"should": [
{ "match": { "skills": "Java" } },
{ "match": { "skills": "Python" } }
],
"must_not": [
{ "term": { "status": "inactive" } }
]
}
}
}
"must"
ক্লজে "occupation"
ফিল্ডে "developer"
থাকতে হবে, "should"
ক্লজে "skills"
ফিল্ডে "Java"
বা "Python"
টার্ম থাকতে পারবে, এবং "must_not"
ক্লজে "status"
ফিল্ডে "inactive"
না থাকতে হবে।*
এবং ?
প্যাটার্ন ব্যবহার করা হয়।{
"query": {
"wildcard": {
"username": "jo*"
}
}
}
"username"
ফিল্ডে "jo"
দিয়ে শুরু হওয়া সমস্ত মান খোঁজা হচ্ছে।{
"query": {
"fuzzy": {
"name": "jon"
}
}
}
"name"
ফিল্ডে "jon"
, "john"
, অথবা এর কাছাকাছি মিল খুঁজে বের করবে।Elasticsearch Query DSL একটি শক্তিশালী এবং নমনীয় সার্চ ল্যাঙ্গুয়েজ, যা ব্যবহারকারীদের সুনির্দিষ্ট কন্ডিশন এবং কিওয়ার্ড ব্যবহার করে সার্চ অপারেশন চালাতে সহায়ক। Leaf Query এবং Compound Query-এর মাধ্যমে বিভিন্ন ধরনের এবং উন্নত সার্চ অপারেশন তৈরি করা যায়। Query DSL-এর সাহায্যে Elasticsearch-এ দ্রুত এবং কার্যকরীভাবে ডেটা সার্চ এবং ফিল্টার করা সম্ভব।